package com.doit.day04

/**
 * 下面三个数组：d1  d2  d3  里面放在了每个城市当天的温度
 * 求每个城市的平均温度
 */
object _01_平均温度 {
  def main(args: Array[String]): Unit = {
    val d1 = Array(("beijing", 28.1), ("shanghai", 28.7), ("guangzhou", 32.0), ("shenzhen", 31.0))
    val d2 = Array(("beijing", 27.3), ("shanghai", 30.1), ("guangzhou", 33.3))
    val d3 = Array(("beijing", 28.2), ("shanghai", 29.1), ("guangzhou", 32.0), ("shenzhen", 32.0))

    //1.先将三个数组放在一个集合里面  List(Array((城市，温度),(城市，温度),(城市，温度)),Array((城市，温度)),Array((城市，温度)))
    val list: List[Array[(String, Double)]] = List(d3, d2, d1)
    //2.压平  List((城市，温度),(城市，温度),(城市，温度),(城市，温度),(城市，温度),(城市，温度),(城市，温度))
    val flatten: List[(String, Double)] = list.flatten
    //3.按照城市进行分组  Map(城市，List((城市，温度),(城市，温度),(城市，温度)))
    val grouped: Map[String, List[(String, Double)]] = flatten.groupBy(_._1)
    //4.  将value 也就是list单独拿出来，对他操作==》 对温度求和/集合的长度
    grouped.map(tp => {
      //就是map集合中的value，也就是相同的城市和每天的温度
      val list1: List[(String, Double)] = tp._2
      //要对他做什么  单独拿出来温度，然后求和
      val wenDu: List[Double] = list1.map(tp => tp._2)
      (tp._1, (wenDu.sum / wenDu.size).formatted("%.2f").toDouble)
    }).foreach(println)


  }

}
